使用材质类型
材质类型定义材质的属性类型。您可以通过调整材质类型定义的材质属性值,设置材质的外观。每种材质类型都有一个顶点着色器和片段着色器,它们设定了材质可用的属性类型。
Kanzi Studio 提供模板工程,其中包含来自位于 <KanziInstallation>/Studio/Asset Library 的 Kanzi Studio Asset Library 的一组默认材质类型和着色器。创建新的 Kanzi Studio 工程时,您可以根据其提供的材质类型从不同的工程模板中选择:
- 要开始使用不包含任何预定义材质类型的模板,选择手动导入材质类型 (Import material types manually)。您可以根据需要将 Kanzi Studio 材质库中的材质类型添加到工程中,或创建自己的材质类型。请参阅为您的工程添加材质类型
- 快速性能顶点着色器 (Fast performance vertex shaders) 模板拟用于低精度高性能 OpenGL ES2 应用程序。它包含优化的基于顶点的着色器,与 OpenGL ES2 配合使用。大多数 GPU 特定计算在顶点着色器中完成。对大多数设备而言,这是一个很好的起点。
- 高质量片段着色器 (High quality fragment shaders) 模板拟用于高精度 OpenGL ES2 应用程序。包含与 OpenGL ES2 一起使用的基于像素着色器的材质。大多数 GPU 特定计算在片段着色器中完成。通常以牺牲性能为代价提供更好的图像质量。
您可以:
- 修改 Kanzi 默认材质类型。请参阅修改默认的冯氏 (Phong) 材质类型。
- 为材质类型添加属性。请参阅为材质类型添加属性。
- 重复使用材质类型。请参阅重复使用材质类型。
为您的工程添加材质类型
您可以通过以下方式为您的工程添加材质类型:
- 创建一个 Kanzi 默认材质类型。
Kanzi 附带一组用于不同用途的默认材质类型。要创建尚未存在于您工程中的 Kanzi 默认材质类型,请在 素材库 (Library) > 材质和纹理 (Materials and Textures) 中 按下 Alt 并右键点击 材质类型 (Material Types),然后选择要添加的材质类型。
如果您在创建工程时使用的模板不含任何预定义的材质类型,则您可以添加所有的 Kanzi 默认材质类型:- ColorTexture、DefaultBlit、FontDefault、MaskTexture、SweepTextures 和 Textured (纹理化) 都是具有通用着色器的材质类型。由于这些着色器更注重功能和质量而非性能,因此这些材质类型适用于开发用途。
- VertexPhong 材质类型是快速执行的材质类型,具有基于顶点的着色器。
- FragmentPhong 材质类型是慢速执行的材质类型,具有基于像素的着色器。

- ColorTexture、DefaultBlit、FontDefault、MaskTexture、SweepTextures 和 Textured (纹理化) 都是具有通用着色器的材质类型。由于这些着色器更注重功能和质量而非性能,因此这些材质类型适用于开发用途。
- 从您的计算机中添加任何材质类型。
要从您的计算机中为您的工程添加任何材质类型,请在 素材库 (Library) 中右键点击 材质和纹理 (Materials and Textures) 并选择 从磁盘加载材质类型 (Load Material Type From Disk),转到包含要添加的材质类型的目录,然后选择材质类型并点击 打开 (Open)。
Kanzi Studio 添加材质类型并使用该材质类型创建材质。您可以使用相同的材质类型创建其他材质。请参阅使用材质。
修改默认的冯氏 (Phong) 材质类型
默认的 FragmentPhong 和 VertexPhong 材质类型支持以下属性:
| 材质类型 (Material type) | 基色纹理 | 标准图纹理 | 反射立方体 | 变形 | 蒙皮 |
|---|---|---|---|---|---|
| FragmentPhong、VertexPhong |
|||||
| FragmentPhongCube、VertexPhongCube |
x | ||||
| VertexPhongMorph | x | ||||
| FragmentPhongSkinned、VertexPhongSkinned | x | ||||
| FragmentPhongTextured、VertexPhongTextured | x | ||||
| FragmentPhongTexturedCube、VertexPhongTexturedCube | x | x | |||
| FragmentPhongTexturedCubeNormalMap | x | x | x | ||
| VertexPhongTexturedMorph | x | x | |||
| FragmentPhongTexturedNormalMap | x | x | |||
| FragmentPhongTexturedSkinned、VertexPhongTexturedSkinned | x | x | |||
要修改 VertexPhong 或 FragmentPhong 材质类型:
- 请为您的工程选择或添加一个默认的 VertexPhong 或 FragmentPhong 材质类型。请参阅为您的工程添加材质类型
例如,在 素材库 (Library) > 材质和纹理 (Materials and Textures) > 材质类型 (Material Types) 中,选择 VertexPhong 材质类型。
- 在 预处理器定义 (Preprocessor Defines) 属性中的属性 (Properties) 中,设置材质类型的属性。
您只能将这种方法用于 FragmentPhong 和 VertexPhong 材质类型。要为其他材质类型修改属性,您必须手动编辑着色器。请参阅编辑着色器。
您可以设置以下 预处理器定义 (Preprocessor Defines):- KANZI_SHADER_USE_BASECOLOR_TEXTURE
要允许使用基色纹理,请将 Value 设置为 1,要将其禁用,请将 值 (Value) 设置为 0。 - KANZI_SHADER_USE_NORMALMAP_TEXTURE
要允许使用标准图,请将 Value 设置为 1,要将其禁用,请将 值 (Value) 设置为 0。 - KANZI_SHADER_USE_REFLECTION_CUBE
要允许使用环境贴图反射,请将 Value 设置为 1,要将其禁用,请将 值 (Value) 设置为 0。 - KANZI_SHADER_USE_MORPHING
要允许使用变形,请将 Value 设置为 1,要将其禁用,请将 值 (Value) 设置为 0。
请参阅使用变形 (Morph) 资源。
请勿为同一个材质类型同时启用变形和蒙皮。 - KANZI_SHADER_SKINNING_BONE_COUNT
要为网格启用蒙皮,请将 Value 设置为您的蒙皮网格中的骨骼数量。
请参阅使用蒙皮网格。
请勿为同一个材质类型同时启用蒙皮和变形。 - KANZI_SHADER_NUM_DIRECTIONAL_LIGHTS、KANZI_SHADER_NUM_POINT_LIGHTS 和 KANZI_SHADER_NUM_SPOT_LIGHTS
要允许使用 方向光 (Directional Light)、点光源 (Point Light) 和 聚光灯 (Spot Light) 节点,请将每种节点类型的 Value 设置为要使用的节点数量。请参阅为材质类型设置光源数量。

- KANZI_SHADER_USE_BASECOLOR_TEXTURE
- 在 Uniforms 属性中的属性 (Properties) 中,Kanzi Studio 会自动更新 uniform 数组,如果缺少任何 uniform 源类型,Kanzi Studio 会使用红色类型标记这些类型。
在属性 (Properties) 中的属性类型 (Property Types) 下方,点击 同步 uniform (Sync with Uniforms),以便为使用材质类型的材质添加缺少的属性。

为材质类型添加属性
为材质类型添加属性可以使其适合您的需求。您可以使用您为了加快和便于在工程中设置材质的外观而自定义或创建的材质类型。为材质类型添加属性时,Kanzi Studio 会将属性添加到使用材质类型的所有材质。
要为材质类型添加属性:
- 在 素材库 (Library) > 材质和纹理 (Materials and Textures) > 材质类型 (Material Types) 中,选择要为其添加属性的材质类型。
- 在属性 (Properties) 中的输入 (Input) 部分中,从下拉菜单中选择要添加的属性。

- 在 素材库 (Library) > 资源文件 (Resource Files) > 着色器 (Shaders) 中,双击要在其中使用属性的着色器,以便将其在 着色器源编辑器 (Shader Source Editor) 中打开。

- 为着色器代码添加属性,然后保存着色器。您可以点击着色器源编辑器 (Shader Source Editor) 中的 Uniforms 按钮,以使用代码片段来声明 uniform。请参阅编辑着色器。

重复使用材质类型
当在您的 Kanzi Studio 工程中创建材质类型时,您可以在另一个 Kanzi Studio 工程中重复使用材质类型。
要重复使用材质类型:
- 保存材质类型:
- 在 素材库 (Library) > 材质和纹理 (Materials and Textures) > 材质类型 (Material Types) 中,右键点击要在另一个工程中使用的材质类型,然后选择 保存材质类型至磁盘 (Save Material Type to Disk)。

- 选择用于保存材质类型的名称和位置,然后点击 保存 (Save)。
- 在 素材库 (Library) > 材质和纹理 (Materials and Textures) > 材质类型 (Material Types) 中,右键点击要在另一个工程中使用的材质类型,然后选择 保存材质类型至磁盘 (Save Material Type to Disk)。
- 复用该材质类型:
- 在 Kanzi Studio 中打开要加载保存的材质类型的工程。
- 在 素材库 (Library) 中右键点击 材质和纹理 (Materials and Textures),选择 从磁盘加载材质类型 (Load Material Type From Disk),前往包含保存材质类型的目录,选择该类型并点击 打开 (Open)。
Kanzi Studio 添加材质类型并使用该材质类型创建材质。您可以使用相同的材质类型创建其他材质。请参阅使用材质。
材质类型 (Material Type)属性类型
要查看材质类型可用属性类型的完整列表,请参阅Material type。